package lambdademo;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.function.BiConsumer;
import java.util.function.Consumer;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 74646
 * Date: 2022-04-01
 * Time: 0:05
 */
class Test {
    public void func(){
        System.out.println("func()");
    }
}

//无参，无返回值
@FunctionalInterface
interface NoParameterNoReturn{
    void test();
}
public class TestDemo2 {
    public static void main(String[] args) {
        HashMap<Integer, String> map = new HashMap<>();
        map.put(1, "hello");
        map.put(2, "bit");
        map.put(3, "hello");
        map.put(4, "lambda");
//        map.forEach(new BiConsumer<Integer, String>(){
//            @Override
//            public void accept(Integer k, String v){
//                System.out.println(k + "=" + v);
//            }
//        });
        map.forEach((key,value)-> System.out.println(key + "=" + value));
    }


    public static void main4(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(10);
        list.add(5);
        list.add(9);
        list.add(66);
//        list.sort(new Comparator<Integer>() {
//            @Override
//            public int compare(Integer o1, Integer o2){
//            //注意这里比较长度
//                return o2-o1;
//            }
//        });
        list.sort((o1, o2) -> o2-o1);
        System.out.println(list);
    }

    public static void main3(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("hello");
        list.add("csdn");
        list.add("hello");
        list.add("lambda");
//        list.forEach(new Consumer<String>(){
//            @Override
//            public void accept(String str){
//            //简单遍历集合中的元素。
//                System.out.print(str+" ");
//            }
//        });
        list.forEach(s-> System.out.print(s+" "));
    }



    public static void main2(String[] args) {
        int a = 10;
        NoParameterNoReturn noParameterNoReturn = ()->{
        // a = 99; error
            System.out.println("捕获变量："+a);
        };
        noParameterNoReturn.test();
    }

    public static void main1(String[] args) {
        int a = 66;
        new Test() {
            @Override
//            a = 99;
            public void func() {
                System.out.println("捕获到变量 a == "+a
                        +"，a是一个常量，或者是一个没有改变过值的变量！");
            }
        }.func();
    }
}
